//
//  main.m
//  Day4homework
//
//  Created by dllo on 16/5/6.
//  Copyright © 2016年 lanou. All rights reserved.
//

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[]) {
    // 第一题 循环打印1-100之间3的倍数(for, while两种)
    // for循环
    /*
    int i = 0;
    for (i = 1; i <= 100; i++) {
        if(i % 3 == 0) {
            printf("%d,", i);
        }
    }
   */
    
    //while循环
   /*
    int i = 1;
    while (i <= 100) {
        if(i % 3 == 0) {
            printf("%d,", i);
        }
        i++;
    }
    */
    
    // 第二题 打印1-100之间所有数,并求1-100之和,奇数之和,偶数之和。
    /*
    int i = 0;
    int sum = 0;
    int sum1 = 0;
    int sum2 = 0;
    for (i = 1; i <= 100; i++){
        printf("%d,", i);
        sum += i;
        if (i % 2 != 0) {
            sum1 += i;
        } else {
            sum2 += i;
        }
    }
    printf("\n1-100之和为:%d\n", sum);
    printf("奇数之和为:%d\n", sum1);
    printf("偶数之和为:%d\n", sum2);
    return 0;
     */
    
    // 第三题 随机产生20个[10 , 100]的正整数,求出他们的和。
    // 随机一个[a, b]范围内的整数的公式: arc4random() % (b - a + 1) + a
    /*
    int i = 0;
    int sum = 0;
    for (i = 1; i <= 20; i++){
        sum += arc4random() % (100 - 10 + 1) +10;
    }
    printf("\n%d", sum);
     */
    
    // 第四题 随机产生30个[50 , 120]的正整数,求出最大值和最小值。
    /*
    int i = 0;
    int max = 0;
    int min = 120;
    int ran = 0;
    for (i = 1; i <= 30; i++) {
        ran = arc4random() % (120 - 50 +1) + 50;
        max = max > ran ? max : ran;
        min = min < ran ? min : ran;
    }
    printf("最大值为:%d\n", max);
    printf("最小值为:%d\n", min);
     */
    
    // 第五题 一个三位数,分别取出它的十位,个位和百位数字,并求出
    //其各个位平方和。
    /*
    int a = 0;
    int hundred = 0;
    int tenth = 0;
    int num = 0;
    printf("请输入一个三位数\n");
    scanf("%d", &a);
    
    hundred = a / 100;
    tenth = a % 100 / 10;
    num = a % 10 / 1;
    
    printf("各个位平方和为:%d\n", hundred * hundred + tenth * tenth + num * num);
    */
    
    // 第六题 编程将所有“水仙花数”打印出来,并打印其总个数。 “水仙 花数”是一个各个位立方之和等于该整数的三位数(个位数立 方 + 十位数立方 + 百位数立方 = 这个整数)。
    /*
    int i = 0;
    int n = 0;
    int li = 0;
    int hundred = 0;
    int tenth = 0;
    int num = 0;
    printf("所有的水仙花数:\n");
    for (i = 100; i <= 999; i++) {
        hundred = i / 100;
        tenth = i % 100 / 10;
        num = i % 10 / 1;
        li = hundred * hundred * hundred + tenth * tenth * tenth + num * num * num;
        if (li == i){
            printf("%d,", i);
            n++;
        }
        
    }
    printf("水仙花数总个数为:%d", n);
    */
    
    // 第七题 已知abc+cba = 1333,其中a、b、c均为一位数,编程求出 满足条件的a、b、c所有组合。
    /*
    int a = 0;
    int b = 0;
    int c = 0;
    
    int n = 1333;
    
    for (a = 1; a <= 9; a++) {
        for (b = 0; b <= 9; b++) {
            for (c = 1; c <= 9; c++) {
                if(n == a * 100 + b * 10 + c * 1 + c * 100 + b * 10 + a * 1) {
                    printf("a为:%d,b为:%d,c为:%d\n", a, b, c);
                }
            }
        }
    }
    */
    
    // 第八题 输入两个数,求最大公约数和最小公倍数。(两种方法:普通方法和辗转相除法)。
    // 普通方法
    /*
    int a = 0;
    int b = 0;
    int n = 0;
    int gys = 0;
    int gbs = 0;
    printf("请输入两个整数,中间用逗号分隔\n");
    scanf("%d,%d", &a, &b);
    // 求公约数
    for (n =1; n <= (a < b ? a : b) ; n++) {
        if (a % n == 0 && b % n == 0) {
            gys = n;
        }
    }
    // 求公倍数
    for (n = (a > b ? a : b); gbs == 0; n++) {
        if (n % a == 0 && n % b == 0) {
            gbs = n;
        }
    }
    printf("%d和%d的最大公约数为:%d\n", a, b, gys);
    printf("%d和%d的最大公倍数为:%d\n", a, b, gbs);
    */
    
    /*
    int m = 0;
    int n = 0;
    printf("请输入两个正整数,中间用逗号分隔\n");
    scanf("%d,%d", &m, &n);
    printf("%d和%d的最大公约数为:%d\n", m, n, gys(m, n));
    printf("%d和%d的最大公约数为:%d\n", m, n, m * n /gys(m, n));
*/
    
}
/*
int gys(int m, int n){
    int temp = 0;
    if (m < n) {
        temp = n;
        n = m;
        m = temp;
    }
    if (m % n == 0) {
        return n;
    } else {
        return gys(n, m % n);
    }
 
}
*/
